/*
 *  Лицензия MIT
 * 
 *  Copyright 2011 Salnikov Aleksey.
 * 
 *  Данная лицензия разрешает, безвозмездно, лицам, получившим копию данного программного обеспечения
 *  и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"),
 *  использовать Программное Обеспечение без ограничений, включая неограниченное право
 *  на использование, копирование, изменение, объединение, публикацию, распространение,
 *  сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам,
 *  которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
 * 
 *  Вышеупомянутый копирайт и данные условия должны быть включены во все копии или значимые
 *  части данного Программного Обеспечения.
 * 
 *  ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ЛЮБОГО ВИДА ГАРАНТИЙ,
 *  ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ,
 *  СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ
 *  НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ
 *  ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ
 *  С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
 *  ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
 */

package CommonTools;

//import Interfaces.AdminInterface;
import Interfaces.ClientInterface;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComboBox;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.table.TableModel;

/**
 * Класс содержит различные часто использующиеся функции
 *
 * @author Salnikov Aleksey
 */
public class Actions {

    protected static Remote connect()
    {
        String rmi = "rmi://" + Settings.getParametrValue("serverip") + ":" + Settings.getParametrValue("serverport") + "/ClientServer";
        try {
            return Naming.lookup(rmi);
        } catch (NotBoundException ex) {
            return null;
        } catch (MalformedURLException ex) {
            return null;
        } catch (RemoteException ex) {
            return null;
        }
    }

    public static void refreshDemandsTable(JTable table) throws RemoteException
    {
        //Соединяемся с rmi
        ClientInterface ai = (ClientInterface) connect();
        try {
            String pc = getPcName();
            String user = getUserName();

            DemandsTModel tm = new DemandsTModel(ai.getMyDemands(pc, user));
            table.clearSelection();
            table.setModel(tm);

            coloredTable(table);
        } catch (SQLException ex) {
            //Logger.getLogger(Actions.class.getName()).log(Level.SEVERE, null, ex);
        }                
    }

    public static ArrayList<Admin> getAllAdmins() throws RemoteException
    {
        ClientInterface ai = (ClientInterface) connect();
        return ai.getAllAdmins();
    }

    private static String getPcName()
    {
        try {
            return InetAddress.getLocalHost().getHostName();
        } catch (UnknownHostException ex) {
            DesignTools.showMessage("Сообщение не доставлено", "Не удается получить имя компьютера", false);
            return null;
        }
    }

    private static String getUserName()
    {
        return System.getProperty("user.name");
    }

    private static void coloredTable(JTable table)
    {
        DemandsCellRenderer dcr = new DemandsCellRenderer();
        DemandsTModel dtm = (DemandsTModel) table.getModel();

        dcr.setDemands(dtm.getDemands());

        final List<Demand> demands = dtm.getDemands();

        for (int i = 0; i < table.getColumnModel().getColumnCount(); i++)
        {
            table.getColumnModel().getColumn(i).setCellRenderer(dcr);
        }

        //Изменяем размер таблицы
        //resizeTableColumn(table);
    }

}

    